#ifndef __LIBRARY_H
#define __LIBRARY_H

#include <stdio.h>
#include <stdlib.h>
#include <stdbool.h>
#include <string.h>
#include <unistd.h>
#include <time.h>
#include "kernel_list.h"

#define ADMIN 0
#define READER 1

//图书结构体
typedef struct {
    char id[20];  // 图书ID
    char name[50];  // 图书名
    char author[25];  // 作者
    char publisher[25];  // 出版社
    float price;  // 价格
    int stock;  // 库存量
    bool is_borrowed;//借阅状态
    struct list_head list; // 图书链表
} Book;

//用户结构体
typedef struct {
    int type;  // 用户类型，0表示管理员，1表示读者
    char id[20];  // 用户ID
    char name[20];  // 用户名
    char pwd[20];  // 用户密码
    struct list_head borrowed_books;  // 借阅的图书链表

    struct list_head list; // 用户链表
} User;

typedef struct {
    char book_id[20];
    time_t borrow_time;
    struct list_head list;
} BorrowRecord;

//定义全局链表头
extern struct list_head(user_list);
extern struct list_head(book_list);
extern User *current_user;

//系统菜单栏
void show_main_menu();
void login_menu();
void register_menu();
void guest_browse();
void admin_menu();
void reader_menu();
void book_management();

//文件保存
void load_data();
void save_data();

//用户
void admin_login();
void reader_login();
void admin_register();
void reader_register();
void show_all_users();
void delete_user();

//图书
void show_all_books();
// void show_books_status();
void modify_book();
void add_book();
void delete_book();
void search_book();

//借阅
void borrow_book();
void show_borrowed_books();
void return_book();

void clear_input_buffer();

#endif